openapi: 3.1.0
info:
  title: Local API
  description: >
    Manage MoreLogin browser profiles from the machine running the MoreLogin
    desktop client.


    **Base URL**: `http://127.0.0.1:40000`


    The Local API can launch a profile **on this machine** (`/api/env/start`)
    and can also start the same

    profile as a **cloud runtime** that runs on MoreLogin infrastructure
    (`/api/cloudbrowser/start`).

    Either way you drive the browser over the Chrome DevTools Protocol (CDP)
    with Puppeteer, Playwright,

    or Selenium.


    To manage the same profiles from a server without the desktop client, use
    the

    [Browser Open API](./open-api.yaml).


    **ID encoding**: MoreLogin IDs are 64-bit integers on the server, but they
    are serialized in JSON as

    decimal strings to avoid precision loss in JavaScript.
  version: 1.0.0
servers:
  - url: http://127.0.0.1:40000
    description: Local API
tags:
  - name: Profiles
    description: Create, update, query, and delete browser profile configurations.
  - name: Runtime
    description: Launch and control browser profiles on this machine.
  - name: Cloud Runtime
    description: >-
      Start, stop, query, and connect to browser profiles running in the
      MoreLogin cloud.
  - name: Fingerprint & Device Config
    description: >-
      Browser kernel versions, user agents, resolutions, languages, time zones,
      and device models.
  - name: Cache & Window
    description: Clear profile cache and arrange profile windows.
paths:
  /api/env/start:
    post:
      summary: Start browser profile
      operationId: startBrowserProfileUsingPOST
      deprecated: false
      description: |
        Used to start the profile; you must specify the profile ID. After
        successful startup, you can obtain the profile debug interface for
        executing Selenium and Puppeteer automation. For Selenium, use the
        WebDriver matching the corresponding kernel version. The WebDriver path
        can be retrieved from the response after profile startup. Requires
        MoreLogin client version 2.15.0 or higher.
      tags:
        - Runtime
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                envId:
                  type: string
                  description: >
                    Environment ID. At least one of `envId` or `uniqueId` must
                    be provided.

                    If both are given, `envId` takes precedence.
                  example: '1993244721490239488'
                uniqueId:
                  type: integer
                  description: >
                    Environment serial number (small integer ID). At least one
                    of `envId` or `uniqueId` must be provided.

                    If both are given, `envId` takes precedence.
                  example: 1
                encryptKey:
                  type: string
                  description: >
                    Encryption key. Required only if end-to-end encryption is
                    enabled for the environment.
                  example: xxx
                isHeadless:
                  type: boolean
                  description: >
                    Whether to start in headless mode. Defaults to `false` if
                    omitted.

                    Note: Requires client version v2.36.0 or higher.
                  Default: false
                  example: false
                cdpEvasion:
                  type: boolean
                  description: |
                    Enable CDP fingerprint evasion to reduce detection risk.
                    Only applies to PC environments.
                    Default:`false`.
                    Note: Requires client version v2.36.0 or higher.
                  Default: false
                  example: false
                closeCheckIPPage:
                  type: boolean
                  description: |
                    Whether to skip opening the detection page.
                    true: Proxy detection before execution
                    false: Proxy detection after execution
                    Note: Requires client version v2.56.0 or higher.
                  Default: false
                  example: false
                checkIPErrorHandle:
                  type: integer
                  description: >
                    Action to take if proxy detection fails

                    Numeric type: 1 or 2

                    1: Do not start the environment if proxy detection fails

                    2: Start the environment even if proxy detection fails

                    If closeCheckIPPage is passed a parameter, this parameter is
                    omitted; default: 1

                    Note: Requires client version v2.56.0 or higher.
                  Default: 1
                  example: 1
            example:
              envId: '1993244721490239488'
              isHeadless: false
              cdpEvasion: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  msg:
                    type: string
                  data:
                    type: object
                    properties:
                      envId:
                        type: string
                        description: profile
                      debugPort:
                        type: string
                      type:
                        type: string
                      version:
                        type: integer
                      webdriver:
                        type: string
                    required:
                      - envId
                      - debugPort
                      - type
                      - version
                      - webdriver
                required:
                  - data
          headers: {}
      security: []
  /api/env/close:
    post:
      summary: Stop browser profile
      deprecated: false
      description: >-
        Closes the specified environment. Requires specifying the environment
        ID. Requires MoreLogin application v2.15.0 or higher.
      tags:
        - Runtime
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                envId:
                  description: >-
                    Environment ID or serial number — at least one must be
                    provided; if both, envId takes precedence.
                  type: string
                uniqueId:
                  description: >-
                    Environment serial number — at least one of 'envId' or
                    'uniqueId' must be provided; if both, 'envId' takes
                    precedence.
                  type: integer
            example:
              envId: '1869649942658850816'
              uniqueId: 0
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  msg:
                    type: 'null'
                  data:
                    type: object
                    properties:
                      envId:
                        type: string
                      debugPort:
                        type: string
                    required:
                      - envId
                      - debugPort
                required:
                  - code
                  - msg
                  - data
          headers: {}
      security: []
  /api/env/create/quick:
    post:
      summary: Quick create browser profile
      deprecated: false
      description: ''
      tags:
        - Profiles
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                browserTypeId:
                  description: 1:Chrome, 2:Firefox
                  type: integer
                  example: 1
                groupId:
                  description: Environment group ID; default:ungrouped (0)
                  type: integer
                  example: 0
                groupName:
                  description: >-
                    Group name (max 50 characters). If provided, the system
                    first checks groupId: if a valid group is found, it is used;
                    otherwise, it searches by groupName. If a group with that
                    name exists, it is referenced; if not, a new group is
                    created. Each team is limited to 1,000 groups.
                  type: string
                  maxLength: 50
                  example: ''
                isEncrypt:
                  description: Enable end-to-end encryption? 0:No, 1:Yes; default:0
                  type: integer
                operatorSystemId:
                  description: OS type 1:Windows, 2:macOS, 3:Android, 4:iOS
                  type: integer
                  example: 1
                quantity:
                  description: Number of environments to create; range:[1–50]
                  type: integer
                  minimum: 1
                  maximum: 50
                  example: 1
                browserCore:
                  description: >-
                    Browser kernel version; default:0 (auto-match). Obtain
                    available versions via '/api/env/advanced/ua/versions'
                  type: integer
                  example: 140
                proxy:
                  type: object
                  properties:
                    proxyId:
                      description: Proxy ID
                      type: integer
                    proxyName:
                      description: Proxy name (maximum 600 characters)
                      type: string
                    proxyType:
                      description: >-
                        Proxy type, 0: http, 1: https. Cannot be empty when
                        proxyProvider is 7/8
                      type: integer
                    proxyProvider:
                      description: >-
                        Proxy provider 0: http, 1: https, 2: socks5, 3: ssh, 4:
                        Oxylabs, 5: Proxys.io, 7: Luminati, 8: Lumauto, 9:
                        Oxylabsauto, 10: Trojan, 11: Shadowsocks, 13: ABCPROXY,
                        14: LunaProxy, 15: IPHTML, 16: PiaProxy, 17: 922S5, 18:
                        360Proxy
                      type: string
                    proxyIp:
                      description: >-
                        Proxy IP. Can be empty when proxyProvider is 16/17/18;
                        required for others
                      type: string
                    proxyPort:
                      description: >-
                        Proxy port (only numbers 1-65535 allowed). Can be empty
                        when proxyProvider is 16/17/18; required for others
                      type: integer
                    username:
                      description: Username (maximum 200 characters)
                      type: string
                    password:
                      description: Password (maximum 100 characters)
                      type: string
                    refreshUrl:
                      description: Refresh URL
                      type: string
                    country:
                      description: >-
                        Country code (e.g. `us`). See [Country Time Zone
                        Table](/api-reference/appendix/country-time-zone) for
                        supported codes. Required when proxyProvider is 16/17/18
                      type: string
                    city:
                      description: City
                      type: string
                    state:
                      description: State/Province
                      type: string
                    encryptionType:
                      description: >-
                        Encryption method. Cannot be empty when proxyProvider is
                        11. 1: aes-128-gcm, 2: aes-192-gcm, 3: aes-256-gcm, 4:
                        aes-128-cfb, 5: aes-192-cfb, 6: aes-256-cfb, 7:
                        aes-128-ctr, 8: aes-192-ctr, 9: aes-256-ctr, 10:
                        rc4-md5, 11: chacha20-ietf, 12: xchacha20, 13:
                        chacha20-ietf-poly1305, 14: xchacha20-ietf-poly1305
                      type: integer
                    ipMonitor:
                      description: 'Enable IP change monitoring? true: On, false: Off'
                      type: boolean
                    ipChangeAction:
                      description: 'IP change monitoring 0: Block access, 1: Warn'
                      type: integer
                  description: Proxy information
              required:
                - browserTypeId
                - operatorSystemId
                - quantity
            example:
              browserTypeId: 1
              operatorSystemId: 1
              quantity: 1
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  msg:
                    type: 'null'
                  data:
                    type: array
                    items:
                      type: string
                  requestId:
                    type: string
                required:
                  - code
                  - msg
                  - data
                  - requestId
          headers: {}
      security: []
  /api/env/create/advanced:
    post:
      summary: Advanced create browser profile
      deprecated: false
      description: ''
      tags:
        - Profiles
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateEnvironmentRequest'
            example:
              accountInfo:
                platformId: 9999
                customerUrl: ''
                username: ''
                password: ''
                otpSecret: ''
                siteId: 0
              advancedSetting:
                ua_version: 140
                os: 2
                time_zone:
                  switcher: 2
                  value: '1703673608443793408'
                web_rtc:
                  switcher: 4
                geo_location:
                  switcher: 2
                  base_on_ip: true
                  longitude: 0
                  latitude: 0
                  accuracy: 17000
                resolution:
                  switcher: 2
                  id: '1703673947297419264'
                font:
                  switcher: 1
                  value: ''
                canvas:
                  switcher: 2
                webgl_image:
                  switcher: 1
                webgl_metadata:
                  switcher: 1
                web_gpu:
                  switcher: 3
                speech_voise:
                  switcher: 1
                audio_context:
                  switcher: 1
                media_device:
                  switcher: 2
                client_rects:
                  switcher: 2
                hardware_concurrency: 6
                memery_device: 4
                port_scan_protection:
                  switcher: 1
                  value: ''
                battery:
                  switcher: 2
                bluetooth:
                  switcher: 1
                do_not_track: 2
                language:
                  switcher: 1
                  value: 1703673595865075712,1703673597404385280
                ua: >-
                  Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)
                  AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.6422.61
                  Safari/537.36
              cookies: ''
              afterStartupConfig:
                afterStartup: 3
                autoOpenUrls:
                  - https://www.x.com
                platformUrl: https://www.facebook.com/
              browserCore: 0
              browserTypeId: 1
              envName: ''
              envRemark: ''
              groupId: 0
              groupName: ''
              isEncrypt: 0
              operatorSystemId: 2
              proxyId: 0
              tagIds: []
              uaVersion: 0
              disableAudio: 0
              disableVideo: 0
              disableImg: 0
              imgLimitSize: 10
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  msg:
                    type: 'null'
                  data:
                    type: string
                  requestId:
                    type: string
                required:
                  - code
                  - msg
                  - data
                  - requestId
          headers: {}
      security: []
  /api/env/update:
    post:
      summary: Modify browser profile
      deprecated: false
      description: ''
      tags:
        - Profiles
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateEnvironmentRequest'
            example:
              accountInfo:
                platformId: 9999
                customerUrl: ''
                username: ''
                password: ''
                otpSecret: ''
                siteId: 0
              advancedSetting:
                ua_version: 140
                os: 2
                time_zone:
                  switcher: 2
                  value: '1703673608443793408'
                web_rtc:
                  switcher: 4
                geo_location:
                  switcher: 2
                  base_on_ip: true
                  longitude: 0
                  latitude: 0
                  accuracy: 17000
                resolution:
                  switcher: 2
                  id: '1703673947297419264'
                font:
                  switcher: 1
                  value: ''
                canvas:
                  switcher: 2
                webgl_image:
                  switcher: 1
                webgl_metadata:
                  switcher: 1
                web_gpu:
                  switcher: 3
                speech_voise:
                  switcher: 1
                audio_context:
                  switcher: 1
                media_device:
                  switcher: 2
                client_rects:
                  switcher: 2
                hardware_concurrency: 6
                memery_device: 4
                port_scan_protection:
                  switcher: 1
                  value: ''
                battery:
                  switcher: 2
                bluetooth:
                  switcher: 1
                do_not_track: 2
                language:
                  switcher: 1
                  value: 1703673595865075712,1703673597404385280
                ua: >-
                  Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)
                  AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.6422.61
                  Safari/537.36
              cookies: ''
              afterStartupConfig:
                afterStartup: 3
                autoOpenUrls:
                  - https://www.x.com
                platformUrl: https://www.facebook.com/
              browserCore: 0
              browserTypeId: 1
              envName: ''
              envRemark: ''
              groupId: 0
              groupName: ''
              isEncrypt: 0
              operatorSystemId: 2
              proxyId: 0
              tagIds: []
              uaVersion: 0
              disableAudio: 0
              disableVideo: 0
              disableImg: 0
              imgLimitSize: 10
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  msg:
                    type: 'null'
                  data:
                    type: 'null'
                  requestId:
                    type: string
                required:
                  - code
                  - msg
                  - data
                  - requestId
          headers: {}
      security: []
  /api/env/removeToRecycleBin/batch:
    post:
      summary: Delete browser profile
      operationId: batchDeleteBrowserProfilesUsingPOST
      deprecated: false
      description: ''
      tags:
        - Profiles
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - envIds
              properties:
                envIds:
                  type: array
                  description: List of environment (browser profile) IDs to delete.
                  items:
                    type: string
                    example: '1868548141708648448'
                  minItems: 1
                  example:
                    - '1868548141708648448'
                    - '1868548141708648449'
                removeEnvData:
                  type: boolean
                  description: |
                    Also delete local configuration files?
                    Supported in v2.28.0+.
                  Default: false
                  example: false
            example:
              envIds:
                - '1868548141708648448'
              removeEnvData: false
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  msg:
                    type: 'null'
                  data:
                    type: boolean
                  requestId:
                    type: string
                required:
                  - code
                  - msg
                  - data
                  - requestId
          headers: {}
      security: []
  /api/env/page:
    post:
      summary: Get a list of browser profiles
      operationId: listBrowserProfilesUsingPOST
      deprecated: false
      description: ''
      tags:
        - Profiles
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                envName:
                  type: string
                  description: >-
                    Filter by environment (profile) name. Empty string returns
                    all.
                  example: ''
                groupId:
                  type: integer
                  description: Filter by group ID. Use 0 for ungrouped profiles.
                  Default: 0
                  example: 0
                envId:
                  type: string
                  description: |
                    Filter by specific environment ID.
                    If provided, other filters may be ignored.
                  example: '1869988538611834880'
                pageNo:
                  type: integer
                  description: Page number (1-based index).
                  Default: 1
                  minimum: 1
                  example: 1
                pageSize:
                  type: integer
                  description: Number of items per page.
                  Default: 10
                  minimum: 1
                  maximum: 100
                  example: 10
            example:
              pageNo: 1
              pageSize: 10
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  msg:
                    type: 'null'
                  data:
                    type: object
                    properties:
                      total:
                        type: string
                      current:
                        type: string
                      pages:
                        type: string
                      dataList:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                              description: Browser profile ID
                            envName:
                              type: string
                              description: Profile name
                            groupId:
                              type: string
                              description: Group ID
                            groupName:
                              type: string
                              nullable: true
                              description: Group name. `null` when the profile is ungrouped
                            tagInfos:
                              type: array
                              description: >-
                                Tag details. Empty array when no tags are
                                assigned
                              items:
                                type: object
                                properties:
                                  id:
                                    type: string
                                    description: Tag ID
                                  tagName:
                                    type: string
                                    description: Tag name
                                required:
                                  - id
                                  - tagName
                            envRemark:
                              type: string
                              nullable: true
                              description: Profile remark
                            proxyId:
                              type: string
                              description: Proxy ID. `0` means no proxy
                            proxy:
                              type: object
                              nullable: true
                              description: >-
                                Proxy configuration. `null` when no proxy is
                                assigned
                              properties:
                                id:
                                  type: string
                                  description: Proxy ID
                                proxyName:
                                  type: string
                                  description: Proxy name
                                proxyType:
                                  type: integer
                                  description: Proxy type
                                proxyProvider:
                                  type: integer
                                  description: Proxy provider
                                proxyCategoryType:
                                  type: integer
                                  description: Proxy category type
                                proxyCheckStatus:
                                  type: integer
                                  description: Proxy check status
                                proxyStatus:
                                  type: integer
                                  description: Proxy status
                                proxyIp:
                                  type: string
                                  description: Proxy IP address
                                exportIp:
                                  type: string
                                  description: Export IP address
                                countryCode:
                                  type: string
                                  description: Country code
                                expiryTime:
                                  type: string
                                  nullable: true
                                  description: Expiry timestamp
                                username:
                                  type: string
                                  description: Proxy username
                                password:
                                  type: string
                                  nullable: true
                                  description: Proxy password
                                refreshUrl:
                                  type: string
                                  nullable: true
                                  description: Proxy refresh URL
                    required:
                      - total
                      - current
                      - pages
                      - dataList
                  requestId:
                    type: string
                required:
                  - code
                  - msg
                  - data
                  - requestId
          headers: {}
      security: []
  /api/env/detail:
    post:
      summary: Get browser profile details
      operationId: getBrowserProfileDetailsUsingPOST
      deprecated: false
      description: ''
      tags:
        - Profiles
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - envId
              properties:
                envId:
                  type: string
                  description: Target environment (browser profile) ID
                  example: '1869988538611834880'
            example:
              envId: '1869988538611834880'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  msg:
                    type: 'null'
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                      envName:
                        type: string
                      browserTypeId:
                        type: integer
                      operatorSystemId:
                        type: integer
                      groupId:
                        type: string
                      groupName:
                        type: string
                        nullable: true
                        description: Group name. `null` when the profile is ungrouped
                      tagInfos:
                        type: array
                        description: Tag details. Empty array when no tags are assigned
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                              description: Tag ID
                            tagName:
                              type: string
                              description: Tag name
                          required:
                            - id
                            - tagName
                      proxyId:
                        type: string
                      isEncrypt:
                        type: integer
                      envRemark:
                        type: string
                      uaVersion:
                        type: integer
                      browserCore:
                        type: integer
                      accountInfo:
                        type: object
                        properties:
                          username:
                            type: string
                          password:
                            type: string
                          siteId:
                            type: string
                          platformId:
                            type: string
                          customerUrl:
                            type: string
                          otpSecret:
                            type: 'null'
                        required:
                          - username
                          - password
                          - siteId
                          - platformId
                          - customerUrl
                          - otpSecret
                      isShowAccount:
                        type: integer
                      afterStartupConfig:
                        type: object
                        properties:
                          afterStartup:
                            type: integer
                          autoOpenUrls:
                            type: array
                            items: {}
                          platformUrl:
                            type: 'null'
                        required:
                          - afterStartup
                          - autoOpenUrls
                          - platformUrl
                      startupParams:
                        type: 'null'
                      cookies:
                        type: 'null'
                      advancedSetting:
                        type: object
                        properties: {}
                  requestId:
                    type: string
          headers: {}
      security: []
  /api/env/advanced/ua/versions:
    get:
      summary: Get a list of browser kernel versions
      deprecated: false
      description: ''
      tags:
        - Fingerprint & Device Config
      parameters: []
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  msg:
                    type: 'null'
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        browserType:
                          type: integer
                        versions:
                          type: array
                          items:
                            type: integer
                  requestId:
                    type: string
          headers: {}
      security: []
  /api/env/advanced/ua/get:
    post:
      summary: Get browser profile UA
      operationId: getBrowserProfileUAUsingPOST
      deprecated: false
      description: ''
      tags:
        - Fingerprint & Device Config
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - os
              properties:
                os:
                  type: integer
                  description: |
                    Operating system type.
                    1 = Windows, 2 = macOS, 3 = Android, 4 = iOS
                  enum:
                    - 1
                    - 2
                    - 3
                    - 4
                  example: 1
                osVersion:
                  type: string
                  description: |
                    OS version (e.g., "Windows 11", "macOS 14").
                  example: Windows 11
                vendor:
                  type: integer
                  description: |
                    Browser type.
                    1 = Chrome, 2 = Firefox
                  enum:
                    - 1
                    - 2
                  example: 1
            example:
              os: 1
              osVersion: Windows 11
              vendor: 1
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  msg:
                    type: string
                  data:
                    type: 'null'
                  resolution:
                    type: object
                    properties:
                      id:
                        type: string
                      value:
                        type: string
                    required:
                      - id
                      - value
                  ua:
                    type: string
                  requestId:
                    type: string
                  error:
                    type: object
                    properties: {}
                required:
                  - resolution
                  - ua
          headers: {}
      security: []
  /api/env/base/resolution/list:
    post:
      summary: Get resolution
      operationId: listResolutionsUsingPOST
      deprecated: false
      description: ''
      tags:
        - Fingerprint & Device Config
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                os:
                  type: integer
                  description: OS type (1=Windows, 2=macOS, 3=Android, 4=iOS)
                  example: 1
                ua:
                  type: string
                  description: User-Agent string (optional)
                  example: ''
              required:
                - os
            example:
              os: 1
              ua: ''
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  msg:
                    type: 'null'
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        value:
                          type: string
                  requestId:
                    type: string
          headers: {}
      security: []
  /api/system/platform/list:
    get:
      summary: Get configurable platforms
      deprecated: false
      description: ''
      tags:
        - Fingerprint & Device Config
      parameters: []
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  msg:
                    type: 'null'
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          description: Platform ID
                        categoryId:
                          type: string
                          description: Category ID
                        groupName:
                          type: string
                          description: Group name
                        groups:
                          type: string
                          description: Group，0：Amazon
                        isCustomer:
                          type: boolean
                          description: Whether to customize the platform
                        logo:
                          type: string
                          description: Platform logo
                        name:
                          type: string
                          description: Platform name
                        orderNo:
                          type: string
                          description: Sort Number
                        sites:
                          type: array
                          items:
                            type: object
                            properties:
                              id:
                                type: string
                                description: Site ID
                              host:
                                type: string
                                description: Site Domain Name
                              name:
                                type: string
                                description: Size name
                              nameBak:
                                type: string
                                description: Size name backup
                              logo:
                                type: string
                                description: Logo
                              url:
                                type: string
                                description: Size URL
                              isDefault:
                                type: boolean
                              country:
                                type: string
                                description: Country
                            required:
                              - id
                              - host
                              - name
                              - logo
                              - nameBak
                              - url
                              - isDefault
                              - country
                          description: Sites information
                      required:
                        - id
                        - categoryId
                        - groupName
                        - groups
                        - isCustomer
                        - logo
                        - name
                        - orderNo
                        - sites
                  requestId:
                    type: string
          headers: {}
      security: []
  /api/env/lock/query:
    post:
      summary: Get browser security lock status
      operationId: queryBrowserLockStatusUsingPOST
      deprecated: false
      description: ''
      tags:
        - Profiles
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - envId
              properties:
                envId:
                  type: string
                  description: Unique environment (browser profile) ID
                  example: '1869988538611834880'
            example:
              envId: '1869988538611834880'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  msg:
                    type: 'null'
                  data:
                    type: object
                    properties:
                      envId:
                        type: string
                      locked:
                        type: boolean
                  requestId:
                    type: string
          headers: {}
      security: []
  /api/env/base/list:
    post:
      summary: Get a list of timezone and language
      operationId: listTimezoneAndLanguageUsingPOST
      deprecated: false
      description: ''
      tags:
        - Fingerprint & Device Config
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - os
              properties:
                os:
                  type: integer
                  description: |
                    Operating system type.
                    1 = Windows, 2 = macOS, 3 = Android, 4 = iOS
                  enum:
                    - 1
                    - 2
                    - 3
                    - 4
                  example: 1
            example:
              os: 1
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  msg:
                    type: string
                  data:
                    type: object
                    properties:
                      time_zone_list:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                            value:
                              type: string
                      language_list:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                            value:
                              type: string
                  requestId:
                    type: string
          headers: {}
      security: []
  /api/env/removeLocalCache:
    post:
      summary: Clear local profile cache
      operationId: clearLocalProfileCacheUsingPOST
      deprecated: false
      description: ''
      tags:
        - Cache & Window
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - envId
              properties:
                envId:
                  type: string
                  description: >
                    Environment ID. Exactly one of `envId` or `uniqueId` must be
                    provided.
                localStorage:
                  type: boolean
                  description: Clear LocalStorage Default:false
                  Default: false
                indexedDB:
                  type: boolean
                  description: Clear IndexedDB Default:false
                  Default: false
                cookie:
                  type: boolean
                  description: Clear cookies Default:false
                  Default: false
                extension:
                  type: boolean
                  description: |
                    Clear extension data. If `extensionFile` is not provided,
                    clears both extension name and data. Default:false
                  Default: false
                extensionFile:
                  type: boolean
                  description: |
                    Clear extension files (effective from v3.36).
                  Default: false
            example:
              envId: '1924340272932134912'
              localStorage: false
              indexedDB: false
              cookie: false
              extension: false
              extensionFile: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  msg:
                    type: string
                  data:
                    type: object
                    properties:
                      envId:
                        type: string
                      requestId:
                        type: string
          headers: {}
      security: []
  /api/env/cache/cleanCloud:
    post:
      summary: Clean Environment Cloud Cache
      deprecated: false
      description: >-
        Cleans environment cloud cookies and other data (LocalStorage,
        IndexedDB, extensions and their data)
      tags:
        - Cache & Window
      parameters:
        - name: Accept-Language
          in: header
          description: Default request language
          required: false
          example: zh-CN
          schema:
            type: string
            default: zh-CN
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                cookie:
                  description: Whether to clear cookies
                  type: boolean
                envId:
                  description: Environment ID, must fill one with serial ID
                  type: integer
                others:
                  description: Whether to clear other cache
                  type: boolean
                uniqueId:
                  description: Serial ID, must fill one with environment ID
                  type: integer
            example: "{\r\n\t\"cookie\": true, //Whether to clear cookies\r\n\t\"envId\": 0, //Environment ID, must fill one with serial ID\r\n\t\"others\": true, //Whether to clear other cache\r\n\t\"uniqueId\": 0 //Serial ID, must fill one with environment ID\r\n}"
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  msg:
                    type: 'null'
                  data:
                    type: 'null'
                  requestId:
                    type: string
              example:
                code: 0
                msg: null
                data: null
                requestId: ca3b32431c264b6c94187fde14d23229
          headers: {}
      security: []
  /api/env/fingerprint/refresh:
    post:
      summary: Refresh fingerprint
      operationId: refreshFingerprintUsingPOST
      deprecated: false
      description: ''
      tags:
        - Fingerprint & Device Config
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - envId
              properties:
                envId:
                  type: string
                  description: >
                    Profile ID (environment ID). Exactly one of `envId` or
                    `uniqueId` must be provided.
                uniqueId:
                  type: string
                  description: >
                    Profile serial number (unique ID). Exactly one of `envId` or
                    `uniqueId` must be provided.
                uaVersion:
                  type: integer
                  description: |
                    Target User-Agent version (e.g., Chrome 129). 
                    If omitted, uses the current UA version from the profile.
                  example: 129
                browserTypeId:
                  type: integer
                  description: |
                    Browser type. 1 = Chrome, 2 = Firefox.
                  enum:
                    - 1
                    - 2
                operatorSystemId:
                  type: integer
                  description: >
                    Operating system type. 1 = Windows, 2 = macOS, 3 = Android,
                    4 = iOS.
                  enum:
                    - 1
                    - 2
                    - 3
                    - 4
                advancedSetting:
                  $ref: '#/components/schemas/AdvancedSetting'
            example:
              envId: '1869988538611834880'
              uniqueId: ''
              uaVersion: 129
              browserTypeId: 1
              operatorSystemId: 2
              advancedSetting: {}
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  msg:
                    type: 'null'
                  data:
                    type: 'null'
                  requestId:
                    type: string
          headers: {}
      security: []
  /api/env/status:
    post:
      summary: Get the browser profile running status
      deprecated: false
      description: ''
      tags:
        - Runtime
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                envId:
                  description: Browser environment ID
                  type: string
              required:
                - envId
            example:
              envId: '1957985601221750784'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                  msg:
                    type: string
                  data:
                    type: object
                    properties:
                      envId:
                        type: string
                        description: env Id
                      status:
                        type: string
                      localStatus:
                        type: string
                      debugPort:
                        type: string
                      webdriver:
                        type: string
                    required:
                      - envId
                      - debugPort
                      - status
                      - localStatus
                      - webdriver
                required:
                  - code
                  - msg
                  - data
          headers: {}
      security: []
  /api/env/getAllScreen:
    post:
      summary: Get screen list
      deprecated: false
      description: >-
        Used to retrieve information of all monitors. No request parameters
        required.
      tags:
        - Cache & Window
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties: {}
            example: >-
              {}//Used to retrieve information of all monitors. No request
              parameters required.
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  msg:
                    type: 'null'
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          description: Unique identifier of the screen
                        scaleFactor:
                          type: integer
                          description: Screen scaling factor
                        width:
                          type: integer
                          description: Screen pixel width
                        height:
                          type: integer
                          description: Screen pixel height
                        internal:
                          type: boolean
                          description: Indicates whether the screen is built-in
                        x:
                          type: integer
                          description: >-
                            Screen position on the X-axis in the virtual
                            coordinate system
                        'y':
                          type: integer
                          description: >-
                            Screen position on the Y-axis in the virtual
                            coordinate system
                        current:
                          type: boolean
                          description: Identifier of the currently active screen
                        realWidth:
                          type: integer
                          description: Actual physical width of the screen
                        realHeight:
                          type: integer
                          description: Actual physical height of the screen
                        workAreaWidth:
                          type: integer
                          description: Pixel width of the screen's work area
                        workAreaHeight:
                          type: integer
                          description: Pixel height of the screen's work area
                        workAreaRealWidth:
                          type: integer
                          description: Actual physical width of the work area
                        workAreaRealHeight:
                          type: integer
                          description: Actual physical height of the work area
                        rectWorkAreaWidth:
                          type: integer
                          description: Corrected width of the work area
                        rectWorkAreaHeight:
                          type: integer
                          description: Corrected height of the work area
                        rectWorkAreaRealWidth:
                          type: integer
                          description: Actual physical width of the corrected work area
                        rectWorkAreaRealHeight:
                          type: integer
                          description: Actual physical height of the corrected work area
                        rectWorkAreaX:
                          type: integer
                          description: X-axis position of the corrected work area
                        rectWorkAreaY:
                          type: integer
                          description: Y-axis position of the corrected work area
                        depthPerComponent:
                          type: integer
                          description: Color precision per pixel on the screen
                        isPrimaryScreen:
                          type: boolean
                          description: Whether the screen is the primary display
              example:
                code: 0
                msg: null
                data:
                  - width: 1920
                    height: 1080
                    internal: false
                    x: 0
                    'y': 0
                    current: true
                    scaleFactor: 1
                    id: 2528732444
                    realWidth: 1920
                    realHeight: 1080
                    workAreaWidth: 1920
                    workAreaHeight: 1032
                    rectWorkAreaWidth: 1920
                    rectWorkAreaHeight: 1032
                    rectWorkAreaRealWidth: 1920
                    rectWorkAreaRealHeight: 1032
                    rectWorkAreaX: 0
                    rectWorkAreaY: 0
                    depthPerComponent: 8
                    workAreaRealWidth: 1920
                    workAreaRealHeight: 1032
                    isPrimaryScreen: true
          headers: {}
      security: []
  /api/env/arrangeWindows:
    post:
      summary: One-click adaptive window arrangement
      deprecated: false
      description: >-
        Used to arrange opened profiles with one click. Requires at least one
        profile to be open.
      tags:
        - Cache & Window
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                arrangeType:
                  description: >-
                    Arrangement type: 1 for Tiled, 2 for Stacked, defaults to
                    Tiled if not specified
                  type: integer
                envIds:
                  type: array
                  items:
                    type: string
                  description: >-
                    Environment IDs, if not specified, all environment windows
                    are selected by default
                screenIds:
                  type: array
                  items:
                    type: integer
                  description: >-
                    Screen IDs, array type, if not specified, arrange on the
                    screen where the mouse cursor is located
            example: "{\r\n    \"arrangeType\": 2, // Arrangement type: 1 for Tiled, 2 for Stacked, integer(int32) type, optional, defaults to Tiled if not specified\r\n    \"envIds\": [\"2014664375044337664\"], // Environment IDs, if not specified, all environment windows are selected by default\r\n    \"screenIds\": [2528732444,2779098405]  // Screen IDs, array type, if not specified, arrange on the screen where the mouse cursor is located\r\n}"
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  arrangeType:
                    type: integer
                  envIds:
                    type: array
                    items:
                      type: string
                    description: Environment ID
                  screenIds:
                    type: array
                    items:
                      type: integer
                    description: Sequence ID
              example:
                arrangeType: 2
                envIds:
                  - '2014664375044337664'
                screenIds:
                  - 2528732444
          headers: {}
      security: []
  /api/env/setGroup/batch:
    post:
      summary: Batch modify profiles group
      deprecated: false
      description: >-
        Used to batch modify the group information of profiles. Creates a new
        group if the group name does not exist.
      tags:
        - Profiles
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                envIds:
                  type: array
                  items:
                    type: string
                    description: >-
                      Environment IDs, array type, must choose one between this
                      and serial IDs
                groupName:
                  description: Group name, string type, required
                  type: string
                uniqueIds:
                  type: array
                  items:
                    type: string
                  description: >-
                    Serial IDs, array type, must choose one between this and
                    environment IDs
              required:
                - groupName
            example: "{\r\n\t\"envIds\": [\r\n\t\t\"2016036223642570752\",\r\n\t\t\"2016028408622419968\"\r\n\t], //Environment IDs, array type, must choose one between this and serial IDs\r\n\t\"groupName\": \"3\", //Group name, string type, required\r\n\t\"uniqueIds\": [] //Serial IDs, array type, must choose one between this and environment IDs\r\n}"
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  msg:
                    type: 'null'
                  data:
                    type: boolean
                  requestId:
                    type: string
                required:
                  - requestId
              example:
                code: 0
                msg: null
                data: true
                requestId: a416bb98f6d240c3bb79e7b2cf6e7ad4
          headers: {}
      security: []
  /api/env/setProxy/batch:
    post:
      summary: Batch modify profiles proxy
      deprecated: false
      description: ''
      tags:
        - Profiles
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                envIds:
                  type: array
                  items:
                    type: string
                  description: Choose one with serial IDs, must fill one
                proxy:
                  type: object
                  properties:
                    city:
                      type: string
                      description: City
                    state:
                      type: string
                      description: State/Province
                    country:
                      type: string
                      description: >-
                        Country code (e.g. `us`). See [Country Time Zone
                        Table](/api-reference/appendix/country-time-zone) for
                        supported codes. Required when proxyProvider is 16/17/18
                    encryptionType:
                      type: integer
                      description: >-
                        Encryption method. Cannot be empty when proxyProvider is
                        11. 1: aes-128-gcm, 2: aes-192-gcm, 3: aes-256-gcm, 4:
                        aes-128-cfb, 5: aes-192-cfb, 6: aes-256-cfb, 7:
                        aes-128-ctr, 8: aes-192-ctr, 9: aes-256-ctr, 10:
                        rc4-md5, 11: chacha20-ietf, 12: xchacha20, 13:
                        chacha20-ietf-poly1305, 14: xchacha20-ietf-poly1305
                    proxyId:
                      type: integer
                      description: Proxy ID
                    proxyIp:
                      description: >-
                        Proxy IP. Can be empty when proxyProvider is 16/17/18;
                        required for others
                      type: string
                    proxyPort:
                      type: integer
                      description: >-
                        Proxy port (only numbers 1-65535 allowed). Can be empty
                        when proxyProvider is 16/17/18; required for others
                    proxyType:
                      type: integer
                      description: >-
                        Proxy type, 0: http, 1: https. Cannot be empty when
                        proxyProvider is 7/8
                    proxyProvider:
                      type: string
                      description: >-
                        Proxy provider 0: http, 1: https, 2: socks5, 3: ssh, 4:
                        Oxylabs, 5: Proxys.io, 7: Luminati, 8: Lumauto, 9:
                        Oxylabsauto, 10: Trojan, 11: Shadowsocks, 13: ABCPROXY,
                        14: LunaProxy, 15: IPHTML, 16: PiaProxy, 17: 922S5, 18:
                        360Proxy
                    proxyName:
                      type: string
                      description: Proxy name (maximum 600 characters)
                    password:
                      type: string
                      description: Password (maximum 100 characters)
                    refreshUrl:
                      type: string
                      description: Refresh URL
                    ipMonitor:
                      type: boolean
                      description: 'Enable IP change monitoring? true: On, false: Off'
                    ipChangeAction:
                      type: integer
                      description: 'IP change monitoring 0: Block access, 1: Warn'
                    username:
                      type: string
                      description: Username (maximum 200 characters)
                  required:
                    - city
                    - country
                    - encryptionType
                    - ipChangeAction
                    - ipMonitor
                    - password
                    - proxyId
                    - proxyIp
                    - proxyName
                    - proxyPort
                    - proxyProvider
                    - proxyType
                    - refreshUrl
                    - state
                    - username
                  description: >-
                    Used to change the bound proxy for environments. If proxyId
                    is provided, bind to the proxy represented by that ID;
                    otherwise, bind to a newly added proxy. If proxy information
                    remains unchanged, no rebinding occurs (any change in
                    proxyIp, proxyPort, proxyType, or proxyProvider is
                    considered a new proxy, and rebinding succeeds)
                uniqueIds:
                  type: array
                  items:
                    type: string
                  description: Choose one with environment ID, must fill one
              required:
                - proxy
            example: "{\r\n\t\"envIds\": [\"2016036223642570752\",\"2016028408622419968\"], //Choose one with serial IDs, must fill one\r\n\t\"proxy\": { //Used to change the bound proxy for environments. If proxyId is provided, bind to the proxy represented by that ID; otherwise, bind to a newly added proxy. If proxy information remains unchanged, no rebinding occurs (any change in proxyIp, proxyPort, proxyType, or proxyProvider is considered a new proxy, and rebinding succeeds)\r\n\t\t\"city\": \"fuzhou\", \r\n\t\t\"country\": \"China\",\r\n\t\t\"encryptionType\": 1,\r\n\t\t\"ipChangeAction\": 0,\r\n\t\t\"ipMonitor\": false,\r\n\t\t\"password\": \"testpassword\",\r\n\t\t\"proxyId\": 0,\r\n\t\t\"proxyIp\": \"1.1.1.1\", //Required\r\n\t\t\"proxyName\": \"testproxyName111\",\r\n\t\t\"proxyPort\": 8807, //Required\r\n\t\t\"proxyProvider\": \"7\",//Required\r\n\t\t\"proxyType\": 0, //Required\r\n\t\t\"refreshUrl\": \"\",\r\n\t\t\"state\": \"fujian\",\r\n\t\t\"username\": \"test-un\"\r\n\t},\r\n\t\"uniqueIds\": [] //Choose one with environment ID, must fill one\r\n}"
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  msg:
                    type: 'null'
                  data:
                    type: boolean
                  requestId:
                    type: string
                required:
                  - requestId
              example:
                code: 0
                msg: null
                data: true
                requestId: d57cfecfc6904fcaa57da9f65b2a15fd
          headers: {}
      security: []
  /api/env/setRemark/batch:
    post:
      summary: Batch modify profile remark
      deprecated: false
      description: ''
      tags:
        - Profiles
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                envIds:
                  type: array
                  items:
                    type: string
                  description: Environment IDs, must choose one between this and serial IDs
                envRemark:
                  description: Remark, required
                  type: string
                uniqueIds:
                  type: array
                  items:
                    type: string
                  description: Serial IDs, must choose one between this and environment IDs
              required:
                - envRemark
            example: "{\r\n\t\"envIds\":  [\"2016036223642570752\",\"2016028408622419968\"], //Environment IDs, must choose one between this and serial IDs\r\n\t\"envRemark\": \"test\", //Remark, required\r\n\t\"uniqueIds\": [] //Serial IDs, must choose one between this and environment IDs\r\n}"
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  msg:
                    type: 'null'
                  data:
                    type: boolean
                  requestId:
                    type: string
                required:
                  - requestId
              example:
                code: 0
                msg: null
                data: true
                requestId: 8172c8ff6ae048a9bb2546760832a460
          headers: {}
      security: []
  /api/env/closeAll:
    post:
      summary: Close all opened profiles
      deprecated: false
      description: Closes all opened prifile windows. No request parameters required.
      tags:
        - Runtime
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties: {}
            example: {}
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  msg:
                    type: string
              example:
                code: 0
                msg: Closed successfully
          headers: {}
      security: []
  /api/env/getAllProcessIds:
    post:
      summary: Get process IDs of all opened profiles
      deprecated: false
      description: >-
        Gets the process IDs of all opened profiles. No request parameters
        required. Requires MoreLogin application version 2.49.0 or higher.
      tags:
        - Runtime
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties: {}
            example: {}
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  msg:
                    type: 'null'
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        envId:
                          type: string
                          description: Environment ID
                        uniqueId:
                          type: integer
                          description: Sequence ID
                        envName:
                          type: string
                          description: Environment Name
                        pid:
                          type: integer
                          description: pid
              example:
                code: 0
                msg: null
                data:
                  - envId: '2014664375044337664'
                    uniqueId: 1788
                    envName: P-1788
                    pid: 22460
          headers: {}
      security: []
  /api/env/getAllDebugInfo:
    post:
      summary: Get remote debugging info for all opened profiles
      deprecated: false
      description: >-
        Gets remote debugging port and other information for all opened
        profiles. No request parameters required.
      tags:
        - Runtime
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties: {}
            example: {}
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  msg:
                    type: 'null'
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        envId:
                          type: string
                          description: Environment ID
                        uniqueId:
                          type: integer
                          description: ' Sequence ID'
                        envName:
                          type: string
                          description: Environment Name
                        debugPort:
                          type: string
                          description: Debug Port
                        webdriver:
                          type: string
                          description: webdriver
                        pid:
                          type: integer
                          description: pid
              example:
                code: 0
                msg: null
                data:
                  - envId: '2014664375044337664'
                    uniqueId: 1788
                    envName: P-1788
                    debugPort: '63536'
                    webdriver: >-
                      C:\Users\EDY\AppData\Roaming\MoreLogin\env-kit\Core\chrome_64_142.9\webdriver.exe
                    pid: 22460
          headers: {}
      security: []
  /api/env/base/mobile/devices:
    post:
      summary: Get phone model list
      deprecated: false
      description: ''
      tags:
        - Fingerprint & Device Config
      parameters: []
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/browser%20phone%20list'
          headers: {}
      security: []
  /api/env/core/download:
    post:
      summary: Download browser kernel
      deprecated: false
      description: >-
        Download and install browser kernel(s). Supports batch downloading up to
        20 kernels per request. The timeout for this operation can be up to
        approximately 30 minutes; callers should set their timeout to greater
        than 1805 seconds.\n\nRequires MoreLogin client version **2.61.1** or
        higher.\n\n### Duplicate Request Handling\n\n- If the same browser type
        and major version appears multiple times in a single request, only one
        lookup and download is performed, but each entry gets its own result.\n-
        Concurrent requests for the same version will join the in-flight task
        instead of starting a new download.\n- If the requested version is
        already installed with the latest minor version, the status will be
        `already_installed`.\n- If an older minor version is installed, it will
        be updated to the latest available minor version.\n\n### Error Code
        Reference\n\n| errorCode | Description |\n|---|---|\n| `INVALID_JSON` |
        Malformed JSON body |\n| `INVALID_REQUEST` | Invalid request structure
        |\n| `BATCH_LIMIT_EXCEEDED` | `Cores` array exceeds 20 items |\n|
        `UNSUPPORTED_BROWSER_TYPE` | Unsupported browser type |\n|
        `INVALID_VERSION` | Invalid version format |\n| `METADATA_LOOKUP_FAILED`
        | Failed to query kernel metadata |\n| `UNSUPPORTED_VERSION` | Kernel
        version does not exist or is not supported on this platform |\n|
        `CLIENT_NOT_READY` | Client not ready |\n| `SDK_NOT_READY` | SDK not
        initialized |\n| `INSUFFICIENT_DISK_SPACE` | Insufficient disk space
        |\n| `DOWNLOAD_FAILED` | Download failed |\n| `CHECKSUM_MISMATCH` | MD5
        checksum verification failed |\n| `EXTRACTION_FAILED` | Extraction or
        installation failed |\n| `TIMEOUT` | Operation timed out |\n| `UNKNOWN`
        | Unknown error |
      tags:
        - Runtime
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                Cores:
                  type: array
                  description: List of kernels to download (1–20 items)
                  items:
                    type: object
                    properties:
                      BrowserType:
                        type: integer
                        description: Browser type. `1`:Chrome, `2`:Firefox
                      Version:
                        type: string
                        description: Kernel major version number, e.g. `"124"`, `"146"`
                    required:
                      - BrowserType
                      - Version
              required:
                - Cores
            example:
              Cores:
                - BrowserType: 1
                  Version: '124'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: >-
                      Response code. `0`:all succeeded; `-1`:partial success;
                      `-2`:all failed
                  msg:
                    type: string
                    nullable: true
                    description: Request-level error message; normally `null` on success
                  data:
                    type: object
                    properties:
                      total:
                        type: integer
                        description: Total number of requested tasks
                      succeeded:
                        type: integer
                        description: >-
                          Number of succeeded tasks (including already
                          installed)
                      failed:
                        type: integer
                        description: Number of failed tasks
                      results:
                        type: array
                        description: >-
                          Execution result for each input item, in the same
                          order as the request
                        items:
                          type: object
                          properties:
                            index:
                              type: integer
                              description: >-
                                Corresponding index in the `Cores` array
                                (0-based)
                            browserType:
                              type: integer
                              nullable: true
                              description: Browser type
                            requestedVersion:
                              type: string
                              nullable: true
                              description: The requested major version
                            resolvedVersion:
                              type: string
                              description: >-
                                The actual full version resolved; returned on
                                success or when metadata is resolved
                            status:
                              type: string
                              description: >-
                                Task status:`installed`, `already_installed`, or
                                `failed`
                            source:
                              type: string
                              description: >-
                                Download source:`downloaded`,
                                `already_installed`, or `joined_in_flight`
                            errorCode:
                              type: string
                              description: >-
                                Stable error classification code returned on
                                failure
                            serverCode:
                              type: integer
                              description: >-
                                Optional. Original business error code from the
                                platform service
                            msg:
                              type: string
                              description: >-
                                Display message; may vary by client language. Do
                                not use for programmatic result checking
                    required:
                      - total
                      - succeeded
                      - failed
                      - results
                required:
                  - code
                  - data
              example:
                code: 0
                msg: null
                data:
                  total: 1
                  succeeded: 1
                  failed: 0
                  results:
                    - index: 0
                      browserType: 1
                      requestedVersion: '124'
                      resolvedVersion: '124.5'
                      status: installed
                      source: downloaded
                      msg: Download successful
          headers: {}
      security: []
  /api/cloudbrowser/start:
    post:
      summary: Start cloud runtime
      description: >
        Start a browser profile as a cloud runtime. The browser runs on
        MoreLogin infrastructure, not on

        this machine.


        Starting is asynchronous. A successful response only means the start
        request was accepted. Poll

        [Page cloud runtimes](#operation/pageCloudRuntimesLocal) until
        `cloudBrowserStatus` is `RUNNING`,

        then call [Connect cloud runtime](#operation/connectCloudRuntimeLocal).


        A member can have only one active run per profile. Starting also
        validates profile permissions,

        feature entitlement, proxy reachability, kernel availability, and AI
        credit balance.
      operationId: startCloudRuntimeLocal
      tags:
        - Cloud Runtime
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CloudBrowserStartRequest'
            example:
              envId: '1800000000000001'
      responses:
        '200':
          $ref: '#/components/responses/VoidDataResponse'
      security: []
  /api/cloudbrowser/stop:
    post:
      summary: Stop cloud runtime
      description: >
        Stop the active cloud runtime for a profile. A successful response only
        means the stop request was

        accepted; archiving and resource release may still be in progress.


        `force` is only honored when the current run has an archive status of
        `FAILED`.
      operationId: stopCloudRuntimeLocal
      tags:
        - Cloud Runtime
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CloudBrowserStopRequest'
            example:
              envId: '1800000000000001'
              force: false
      responses:
        '200':
          $ref: '#/components/responses/VoidDataResponse'
      security: []
  /api/cloudbrowser/page:
    post:
      summary: Page cloud runtimes
      description: >
        Query the browser profiles visible to the authenticated member together
        with the cloud runtime

        status for that member.


        `envId` also accepts the field alias `id`. `groupId` of `0` means
        ungrouped.
      operationId: pageCloudRuntimesLocal
      tags:
        - Cloud Runtime
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CloudBrowserPageRequest'
            example:
              pageNo: 1
              pageSize: 10
              keyword: marketing
      responses:
        '200':
          $ref: '#/components/responses/CloudBrowserPageResponse'
      security: []
  /api/cloudbrowser/connect:
    post:
      summary: Connect cloud runtime
      description: >
        Return the connection details for a running cloud runtime. Attach an
        automation framework such as

        Puppeteer, Playwright, or Selenium to the returned `cdpUrl`.


        The runtime must be in the `RUNNING` state. Calling this again issues a
        new desktop token, which

        can invalidate an earlier viewer session. Treat both returned URLs as
        short-lived credentials and

        do not log or persist them.
      operationId: connectCloudRuntimeLocal
      tags:
        - Cloud Runtime
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CloudBrowserConnectRequest'
            example:
              envId: '1800000000000001'
      responses:
        '200':
          $ref: '#/components/responses/CloudBrowserConnectResponse'
      security: []
components:
  schemas:
    start browser profile:
      type: object
      properties:
        envId:
          type: string
          description: profile
        debugPort:
          description: Chrome DevTools Protocol (CDP) debugging port (e.g. 9222)
          type: string
        type:
          description: Browser type (e.g., 'chrome', 'firefox')
          type: string
        version:
          description: Browser version / kernel version (e.g., 129)
          type: integer
        webdriver:
          description: Local file path of the matching WebDriver executable
          type: string
      required:
        - envId
        - debugPort
        - type
        - version
        - webdriver
    UaGet:
      type: object
      properties:
        resolution:
          description: Resolution settings
          type: object
          properties:
            id:
              type: string
            value:
              type: string
          required:
            - id
            - value
        ua:
          description: User Agent string
          type: string
      required:
        - resolution
        - ua
    CreateEnvironmentRequest:
      allOf:
        - $ref: '#/components/schemas/EnvironmentBase'
        - type: object
          required:
            - browserTypeId
            - operatorSystemId
          properties:
            proxy:
              type: object
              properties:
                proxyId:
                  description: Proxy ID
                  type: integer
                proxyName:
                  description: Proxy name (maximum 600 characters)
                  type: string
                proxyType:
                  description: >-
                    Proxy type, 0: http, 1: https. Cannot be empty when
                    proxyProvider is 7/8
                  type: integer
                proxyProvider:
                  description: >-
                    Proxy provider 0: http, 1: https, 2: socks5, 3: ssh, 4:
                    Oxylabs, 5: Proxys.io, 7: Luminati, 8: Lumauto, 9:
                    Oxylabsauto, 10: Trojan, 11: Shadowsocks, 13: ABCPROXY, 14:
                    LunaProxy, 15: IPHTML, 16: PiaProxy, 17: 922S5, 18: 360Proxy
                  type: string
                proxyIp:
                  description: >-
                    Proxy IP. Can be empty when proxyProvider is 16/17/18;
                    required for others
                  type: string
                proxyPort:
                  description: >-
                    Proxy port (only numbers 1-65535 allowed). Can be empty when
                    proxyProvider is 16/17/18; required for others
                  type: integer
                username:
                  description: Username (maximum 200 characters)
                  type: string
                password:
                  description: Password (maximum 100 characters)
                  type: string
                refreshUrl:
                  description: Refresh URL
                  type: string
                country:
                  description: >-
                    Country code (e.g. `us`). See [Country Time Zone
                    Table](/api-reference/appendix/country-time-zone) for
                    supported codes. Required when proxyProvider is 16/17/18
                  type: string
                city:
                  description: City
                  type: string
                state:
                  description: State/Province
                  type: string
                encryptionType:
                  description: >-
                    Encryption method. Cannot be empty when proxyProvider is 11.
                    1: aes-128-gcm, 2: aes-192-gcm, 3: aes-256-gcm, 4:
                    aes-128-cfb, 5: aes-192-cfb, 6: aes-256-cfb, 7: aes-128-ctr,
                    8: aes-192-ctr, 9: aes-256-ctr, 10: rc4-md5, 11:
                    chacha20-ietf, 12: xchacha20, 13: chacha20-ietf-poly1305,
                    14: xchacha20-ietf-poly1305
                  type: integer
                ipMonitor:
                  description: 'Enable IP change monitoring? true: On, false: Off'
                  type: boolean
                ipChangeAction:
                  description: 'IP change monitoring 0: Block access, 1: Warn'
                  type: integer
              description: Proxy information
    UpdateEnvironmentRequest:
      allOf:
        - $ref: '#/components/schemas/EnvironmentBase'
        - type: object
          required:
            - envId
          properties:
            envId:
              type: string
              description: Environment ID
    EnvironmentBase:
      type: object
      properties:
        browserTypeId:
          type: integer
          description: Browser type ID; 1=Chrome, 2=Firefox
        operatorSystemId:
          type: integer
          description: OS type ID; 1:Windows 2:macOS 3:Android 4:IOS 5:Linux
        isEncrypt:
          type: integer
          description: Whether to encrypt the profile; 0=No, 1=Yes
        startupParams:
          type: array
          items:
            type: string
          description: Additional browser startup parameters
        accountInfo:
          description: Account information
          $ref: '#/components/schemas/AccountInfo'
        advancedSetting:
          description: Advanced browser fingerprint settings
          $ref: '#/components/schemas/AdvancedSetting'
        afterStartupConfig:
          description: Configurations after startup
          $ref: '#/components/schemas/AfterStartupConfig'
        browserCore:
          type: integer
          description: >-
            Kernel version; default:0 (auto-match). Fetch available versions via
            `/api/env/advanced/ua/versions`.
        cookies:
          type: string
          description: Cookie string to preload (optional)
        envName:
          type: string
          description: Environment name
        envRemark:
          type: string
          description: Environment remark; max length:1500 chars
        groupId:
          type: integer
          description: Environment group ID; default:ungrouped (0)
        groupName:
          type: string
          maxLength: 50
          description: >-
            Group name (max 50 characters). If provided, the system first checks
            groupId: if a valid group is found, it is used; otherwise, it
            searches by groupName. If a group with that name exists, it is
            referenced; if not, a new group is created. Each team is limited to
            1,000 groups.
        proxyId:
          type: integer
          description: Proxy ID; default:0
        tagIds:
          type: array
          items:
            type: integer
          description: Tag IDs; default:none
        uaVersion:
          type: integer
          description: UA preset version; default:0 (all)
        disableAudio:
          type: integer
          description: Disable audio:0 = off, 1 = on
        disableImg:
          type: integer
          description: Disable image loading:0 = off, 1 = on
        disableVideo:
          type: integer
          description: Disable video loading:0 = off, 1 = on
        imgLimitSize:
          type: integer
          description: Max image size (KB)
    AccountInfo:
      type: object
      properties:
        customerUrl:
          type: string
          description: >-
            Custom platform URL — required if platformId=9999, must be a valid
            URL
        password:
          type: string
          description: Password; max length:50 characters
        platformId:
          type: integer
          description: >-
            Platform ID; use 9999 for custom URL. Refer to
            /api/system/platform/list.
        siteId:
          type: integer
          description: >-
            Site ID; obtain via ""Get Configurable Platforms"" API
            (/api/system/platform/list)
        username:
          type: string
          maxLength: 64
          description: Username; max length:64 characters
    AdvancedSetting:
      type: object
      description: Advanced browser fingerprint and behavior configuration.
      properties:
        ua:
          type: string
          description: >
            Customize the profile User-Agent (UA). Must follow standard UA
            format.

            Available via the “Get Browser UA” API.
        time_zone:
          description: Timezone settings
          $ref: '#/components/schemas/TimeZoneConfig'
        web_rtc:
          description: WebRTC settings
          $ref: '#/components/schemas/WebRTCConfig'
        geo_location:
          description: Geolocation settings
          $ref: '#/components/schemas/GeoLocationConfig'
        language:
          description: Language
          $ref: '#/components/schemas/LanguageConfig'
        resolution:
          description: Resolution settings
          $ref: '#/components/schemas/ResolutionConfig'
        font:
          description: Font settings
          $ref: '#/components/schemas/FontConfig'
        canvas:
          description: Canvas fingerprinting setting
          $ref: '#/components/schemas/CanvasConfig'
        webgl_image:
          description: WebGL image settings
          $ref: '#/components/schemas/WebGLImageConfig'
        webgl_metadata:
          description: WebGL metadata settings
          $ref: '#/components/schemas/WebGLMetadataConfig'
        audio_context:
          description: 'AudioContext: 1 = noise, 2 = authentic'
          $ref: '#/components/schemas/AudioContextConfig'
        media_device:
          description: 'Media device: 1 = noise, 2 = authentic'
          $ref: '#/components/schemas/MediaDeviceConfig'
        client_rects:
          description: 'ClientRects: 1 = noise, 2 = authentic'
          $ref: '#/components/schemas/ClientRectsConfig'
        speech_voise:
          description: 'Speech voice: 1 = privacy, 2 = authentic'
          $ref: '#/components/schemas/SpeechVoiseConfig'
        hardware_concurrency:
          type: integer
          description: |
            Simulated number of logical CPU cores.
            Default:4. Options: 0 (real), 2, 3, 4, 6, 8, 10, 12.
        memery_device:
          type: integer
          description: |
            Simulated device memory (GB).
            Default:8. Options: 0 (real), 2, 4, 6, 8.
        do_not_track:
          type: integer
          description: Do Not Track setting. Default:2. 1 = on, 2 = off.
        bluetooth:
          description: 'Bluetooth: 1 = privacy, 2 = authentic'
          $ref: '#/components/schemas/BluetoothConfig'
        battery:
          description: 'Battery: 1 = privacy, 2 = authentic'
          $ref: '#/components/schemas/BatteryConfig'
        port_scan_protection:
          description: Port scan protection
          $ref: '#/components/schemas/PortScanProtectionConfig'
        os_version:
          type: string
          description: macOS system version (e.g., macOS 12, macOS 13, macOS 14).
        web_gpu:
          description: WebGPU settings
          $ref: '#/components/schemas/WebGPUConfig'
        ciphers:
          description: Cipher suite configurations
          $ref: '#/components/schemas/CiphersConfig'
        mobile_device:
          type: string
          description: |
            Phone model ID (as string). Obtain via "Get Phone Model List" API.
            Example: "1826502391344832512"
    TimeZoneConfig:
      type: object
      properties:
        switcher:
          type: integer
          description: Timezone option. Default:1. 1 = Match IP, 2 = Custom.
        value:
          type: string
          description: |
            Required when switcher=2.
            Timezone ID from “Get Timezone & Language List” API.
    WebRTCConfig:
      type: object
      properties:
        switcher:
          type: integer
          description: >
            WebRTC policy. Default:2. 1 = Privacy, 2 = Replacement, 3 = Real, 4
            = Disabled, 5 = Forwarding.
    GeoLocationConfig:
      type: object
      properties:
        switcher:
          type: integer
          description: Geolocation policy. Default:1. 1 = Prompt, 2 = Disabled.
        base_on_ip:
          type: boolean
          description: >-
            Generate location based on IP? Default:true. true = prompt, false =
            manual.
        latitude:
          type: number
          format: float
          description: Latitude. Required if base_on_ip=false.
        longitude:
          type: number
          format: float
          description: Longitude. Required if base_on_ip=false.
        accuracy:
          type: number
          format: float
          description: Accuracy in meters. Required if base_on_ip=false.
    LanguageConfig:
      type: object
      properties:
        switcher:
          type: integer
          description: Language policy. Default:1. 1 = Match IP, 2 = Custom.
        value:
          type: string
          description: >
            Required when switcher=2.

            Comma-separated language IDs from “Get Timezone & Language List”
            API.
    ResolutionConfig:
      type: object
      properties:
        switcher:
          type: integer
          description: Resolution policy. Default:1. 1 = Real, 2 = Custom.
        id:
          type: string
          description: |
            Required when switcher=2.
            Resolution ID from “Get Resolution List” API.
    FontConfig:
      type: object
      properties:
        switcher:
          type: integer
          description: Font policy. Default:1. 1 = Real, 2 = Custom.
        value:
          type: string
          description: Comma-separated custom font names (required if switcher=2).
    CanvasConfig:
      type: object
      properties:
        switcher:
          type: integer
          description: Canvas policy. Default:1. 1 = Noise, 2 = Real.
    WebGLImageConfig:
      type: object
      properties:
        switcher:
          type: integer
          description: WebGL image policy. Default:1. 1 = Noise, 2 = Real.
    WebGLMetadataConfig:
      type: object
      properties:
        switcher:
          type: integer
          description: >-
            WebGL metadata policy. Default:3. 1 = Real, 2 = Disable HW
            acceleration, 3 = Custom.
        provider:
          type: string
          description: WebGL vendor string (e.g., "Google Inc.")
        render:
          type: string
          description: WebGL renderer string (e.g., "ANGLE (...)")
    AudioContextConfig:
      type: object
      properties:
        switcher:
          type: integer
          description: AudioContext policy. Default:1. 1 = Noise, 2 = Realistic.
    MediaDeviceConfig:
      type: object
      properties:
        switcher:
          type: integer
          description: Media device policy. Default:1. 1 = Noise, 2 = Real.
    ClientRectsConfig:
      type: object
      properties:
        switcher:
          type: integer
          description: ClientRects policy. Default:1. 1 = Noise, 2 = Real.
    SpeechVoiseConfig:
      type: object
      properties:
        switcher:
          type: integer
          description: SpeechVoices policy. Default:1. 1 = Privacy, 2 = Real
    BluetoothConfig:
      type: object
      properties:
        switcher:
          type: integer
          description: Bluetooth policy. Default:1. 1 = Privacy, 2 = Authenticity.
    BatteryConfig:
      type: object
      properties:
        switcher:
          type: integer
          description: Battery policy. Default:1. 1 = Privacy, 2 = Authenticity.
    PortScanProtectionConfig:
      type: object
      properties:
        switcher:
          type: integer
          description: Port scan protection. Default:1. 1 = On, 2 = Off.
        value:
          type: string
          description: Allowed local network ports to connect (comma-separated).
    WebGPUConfig:
      type: object
      properties:
        switcher:
          type: integer
          description: >-
            WebGPU policy. Default:1. 1 = WebGL-based matching, 2 = true, 3 =
            disabled.
    AfterStartupConfig:
      type: object
      properties:
        afterStartup:
          type: integer
          format: int32
          description: |
            Action after startup. Default:1.
            1 = Continue last page,
            2 = Open specified URLs,
            3 = Open URLs + platform,
            4 = Continue last page + platform.
        autoOpenUrls:
          type: array
          items:
            type: string
            format: uri
          description: List of valid URLs to open automatically (required for options 2–3).
    CiphersConfig:
      type: object
      properties:
        switcher:
          type: integer
          description: TLS cipher policy. Default:1. 1 = Default, 2 = Custom.
        value:
          type: string
          description: >
            Required when switcher=2.

            Comma-separated list of TLS protocols to disable (e.g.,
            "TLSv1,TLSv1.1").
    platformList:
      type: object
      properties:
        id:
          type: string
          description: Platform ID
        categoryId:
          type: string
          description: Category ID
        groupName:
          type: string
          description: Group name
        groups:
          type: string
          description: Group，0：Amazon
        isCustomer:
          type: boolean
          description: Whether to customize the platform
        logo:
          type: string
          description: Platform logo
        name:
          type: string
          description: Platform name
        orderNo:
          type: string
          description: Sort Number
        sites:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                description: Site ID
              host:
                type: string
                description: Site Domain Name
              name:
                type: string
                description: Size name
              nameBak:
                type: string
                description: Size name backup
              logo:
                type: string
                description: Logo
              url:
                type: string
                description: Size URL
              isDefault:
                type: boolean
              country:
                type: string
                description: Country
            required:
              - id
              - host
              - name
              - logo
              - nameBak
              - url
              - isDefault
              - country
          description: Sites information
      required:
        - categoryId
        - groupName
        - groups
        - id
        - isCustomer
        - logo
        - name
        - orderNo
        - sites
    browser phone list:
      type: object
      properties:
        code:
          description: Return result code 0:Normal Other codes are exceptions.
          type: integer
        msg:
          description: Error message
          type: string
        data:
          description: Response data
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              name:
                type: string
              resolution:
                type: string
              os:
                type: integer
              platform:
                type: string
        requestId:
          description: Operation request ID
          type: string
      required:
        - code
        - msg
        - data
        - requestId
    EnvironmentId:
      type: string
      pattern: ^[1-9]\d*$
      description: >
        Browser profile (environment) ID. Serialized as a decimal string to
        avoid JavaScript

        precision loss on 64-bit integers.
      example: '1800000000000001'
    CloudBrowserStartRequest:
      type: object
      properties:
        envId:
          $ref: '#/components/schemas/EnvironmentId'
      required:
        - envId
    ApiResponseBase:
      type: object
      properties:
        code:
          type: integer
          description: >-
            Return result code. `0` means success; other codes indicate
            exceptions.
          example: 0
        msg:
          type:
            - string
            - 'null'
          description: Error message. Usually `null` on success.
          example: null
        requestId:
          type: string
          description: >-
            Operation request ID. This field may be present when the request
            passes through the API gateway.
          example: 1d4f3ea968664593860b94b35d4ebf5e
      required:
        - code
        - msg
    CloudBrowserStopRequest:
      type: object
      properties:
        envId:
          $ref: '#/components/schemas/EnvironmentId'
        force:
          type: boolean
          description: >
            Whether to forcibly release the cloud runtime. Only takes effect
            when the current run has

            an archive status of `FAILED`; in that case the archive step is
            skipped and runtime

            resources are reclaimed. Ignored in all other cases.
          default: false
          example: false
      required:
        - envId
    CloudBrowserPageRequest:
      type: object
      properties:
        uniqueIds:
          type: array
          description: Environment sequence numbers. Up to 100 items.
          maxItems: 100
          items:
            type: integer
            format: int32
          example:
            - 1001
            - 1002
        envId:
          allOf:
            - $ref: '#/components/schemas/EnvironmentId'
          description: Environment ID. The request also accepts the field alias `id`.
        envName:
          type: string
          description: Environment name.
          example: marketing-01
        keyword:
          type: string
          description: >-
            Keyword filter. Matches environment name, group name, tag name, and
            remark.
          example: marketing
        groupId:
          type: string
          pattern: ^\d+$
          description: Group ID. `0` means ungrouped.
          example: '0'
        pageNo:
          type: integer
          format: int64
          description: Current page number, starting from 1. Default is 1.
          minimum: 1
          default: 1
          example: 1
        pageSize:
          type: integer
          format: int64
          description: Number of items per page. Default is 10, maximum 100.
          minimum: 1
          maximum: 100
          default: 10
          example: 10
      required:
        - pageNo
        - pageSize
    CloudBrowserStatus:
      type: string
      description: |
        Cloud runtime status:
        - `STARTING` — starting up
        - `RUNNING` — running and ready to connect
        - `CLOSED` — not started, closed, or failed to start
      enum:
        - STARTING
        - RUNNING
        - CLOSED
      example: RUNNING
    CloudBrowserArchiveStatus:
      type:
        - string
        - 'null'
      description: >
        Archive status of the current cloud run. `null` when there is no active
        run record:

        - `PENDING` — pending archive

        - `ARCHIVING` — archiving

        - `COMPLETED` — archive completed

        - `FAILED` — archive failed
      enum:
        - PENDING
        - ARCHIVING
        - COMPLETED
        - FAILED
        - null
      example: null
    CloudBrowserPageItem:
      type: object
      properties:
        id:
          $ref: '#/components/schemas/EnvironmentId'
        envName:
          type: string
          description: Environment name.
          example: marketing-01
        proxyId:
          type:
            - string
            - 'null'
          pattern: ^\d+$
          description: >-
            Proxy ID currently bound to the profile. `null` when no proxy is
            configured.
          example: '1800000000000101'
        cloudBrowserStatus:
          $ref: '#/components/schemas/CloudBrowserStatus'
        cloudBrowserArchiveStatus:
          $ref: '#/components/schemas/CloudBrowserArchiveStatus'
        startDate:
          type:
            - string
            - 'null'
          format: date-time
          description: >-
            Cloud runtime start time. `null` while starting, or when not started
            or closed.
          example: '2026-01-15T10:30:00.000+00:00'
      required:
        - id
        - envName
        - cloudBrowserStatus
    CloudBrowserPageData:
      type: object
      properties:
        total:
          type: string
          pattern: ^\d+$
          description: Total number of records.
          example: '42'
        current:
          type: string
          pattern: ^\d+$
          description: Current page number.
          example: '1'
        pages:
          type: string
          pattern: ^\d+$
          description: Total number of pages.
          example: '5'
        dataList:
          type: array
          description: >-
            Environments on the current page. Empty array when there are no
            results.
          items:
            $ref: '#/components/schemas/CloudBrowserPageItem'
      required:
        - total
        - current
        - pages
        - dataList
    CloudBrowserConnectRequest:
      type: object
      properties:
        envId:
          $ref: '#/components/schemas/EnvironmentId'
      required:
        - envId
    CloudBrowserConnectResult:
      type: object
      properties:
        cdpUrl:
          type: string
          description: >
            Full CDP (Chrome DevTools Protocol) address including the access
            `token` parameter. Pass this

            URL to an automation framework such as Puppeteer, Playwright, or
            Selenium to attach to the

            remote browser.
          example: >-
            https://runtime1.morelogin.com:16167?token=c62fedaaac524e41a0f02fc4345d41cb
        accessUrl:
          type:
            - string
            - 'null'
          description: >
            Cloud browser page wrapper address. Open it in a browser to view and
            control the cloud

            browser desktop. `null` when the page wrapper is not configured.


            The `token` parameter is a Base64-encoded payload carrying the
            desktop URL, desktop token,

            expiry, and team, user, member, and environment IDs. The `envName`
            and `lang` parameters set

            the displayed environment name and interface language.
          example: >-
            https://official-website.morelogin.com/browser-remote?token=eyJkZXNrdG9wVXJsIjoi...ZW52SWQiOiIyMDczMzk1NDg5NzM4OTE5OTM2In0%3D&envName=P-1267&lang=en-US
      required:
        - cdpUrl
  responses:
    VoidDataResponse:
      description: Success
      content:
        application/json:
          schema:
            allOf:
              - $ref: '#/components/schemas/ApiResponseBase'
              - type: object
                properties:
                  data:
                    type: 'null'
                    example: null
    CloudBrowserPageResponse:
      description: Success
      content:
        application/json:
          schema:
            allOf:
              - $ref: '#/components/schemas/ApiResponseBase'
              - type: object
                properties:
                  data:
                    $ref: '#/components/schemas/CloudBrowserPageData'
                required:
                  - data
    CloudBrowserConnectResponse:
      description: Success
      content:
        application/json:
          schema:
            allOf:
              - $ref: '#/components/schemas/ApiResponseBase'
              - type: object
                properties:
                  data:
                    $ref: '#/components/schemas/CloudBrowserConnectResult'
                required:
                  - data
          example:
            code: 0
            msg: null
            data:
              cdpUrl: >-
                https://runtime1.morelogin.com:16167?token=c62fedaaac524e41a0f02fc4345d41cb
              accessUrl: >-
                https://official-website.morelogin.com/browser-remote?token=eyJkZXNrdG9wVXJsIjoi...ZW52SWQiOiIyMDczMzk1NDg5NzM4OTE5OTM2In0%3D&envName=P-1267&lang=en-US
            requestId: 1d4f3ea968664593860b94b35d4ebf5e
